// src/utils/request.js
import axios from 'axios';

// 设置基础 URL
const API_BASE_URL = 'http://localhost:3000';

// 创建 Axios 实例
const service = axios.create({
    baseURL: API_BASE_URL,
    timeout: 5000, // 请求超时设置（10秒）
});

// 请求拦截器
service.interceptors.request.use(config => {
    const userInfo = JSON.parse(localStorage.getItem('userInfo'));
    if (userInfo && userInfo.token) {
        config.headers.Authorization = `Bearer ${userInfo.token}`;
    }
    return config;
}, error => {
    return Promise.reject(error);
});

// 响应拦截器
service.interceptors.response.use(
    response => {
        // 先处理 HTTP 状态是 200 的情况
        const res = response.data;
        // 保留 message 和 code，放到新的对象中

        if (res.code !== 0) {
            const error = new Error(res.message || '请求失败');
            error.code = res.code;
            throw error;
        }
        return res;
    },
    error => {
        let message = '';
        if (error.response) {
            const status = error.response.status;
            switch (status) {
                case 401:
                    message = "认证失败，请重新登录";
                    break;
                case 403:
                    message = "当前操作没有权限";
                    break;
                case 404:
                    message = "资源不存在";
                    break;
                case 409:
                    message = "用户名已存在";
                    break;
                default:
                    message = "网络异常，请稍后重试";
            }
        } else {
            message = "无法连接到服务器";
        }

        console.error(message);
        error.message = message;
        return Promise.reject(error);
    }
);

export default service;